# -*- coding:utf-8 -*-
# Author:wencheng.zhao
#读取用户名密码文件
user_file = open('username.txt','r')                        #读取user文件
lock_file = open('lockname.txt','r')                        #读取黑名单文件
lock_list = []                                              #定义一个列表存放黑名单内的内容
for a in lock_file.readlines():                            # 逐行读取黑名单中的内容
    lock_list.append(a.strip())                             # 将黑名单内的内容写入列表
username_read = eval(user_file.readline())                  #成为字典类型
try_num = 1                                                 #用于标识尝试的次数
count = 1                                                   #用户判断是否需要重新输入用户名
print("\n**************登录系统****************")
while  True:
    if count != int(1):
        passwd_input = input("请再次输入此用户密码,剩余尝试次数%d次:"%(left_num))  #当用户名正确而密码不正确是打印
    else:
        username_input = input("\n请输入用户名:").strip()   #获取用户名
        passwd_input = input("请输入密码:")                 #获取密码
    if len(username_input) == 0:                            #判断输入是否为空
        print("用户名输入不能为空，请重新输入.")
    if username_input in lock_list:                         #判断用户输入的用户名是否在黑名中
            print("抱歉，该用户已经被锁定!!!----系统自动退出")
            break
    else:
        if username_input not in username_read.keys():          #判断用户名是否存在
            print("用户名不存在！请重新输入")
            continue
        else:
            if passwd_input == username_read[username_input]:       #验证用户名和密码
                print("恭喜登陆成功！！")
                break
            else:
                left_num = 3 - try_num                              #剩余次数为3减去尝试的次数
                try_num += 1                                        #自增
                count = 2                                           #coun等于2是不提示重新输入用户名，而是提示再次尝试密码
                if left_num == 0:
                    lock_file = open('lockname.txt', 'a')           #追加方式打开黑名单文件
                    lock_file.write(username_input + "\n")   #防止文件中光标的位置在一行的结尾加了换行
                    print("尝试次数已经到了 。。。该用户被锁定。")
                    break
user_file.close()
lock_file.close()